home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 26 / AACD 26.iso / AACD / Programming / AllPlaton / Unsorted / Messager2.AMOS / Messager2.amosSourceCode < prev    next >
Encoding:
AMOS Source Code  |  1995-03-07  |  4.6 KB  |  138 lines

  1. ' Sehr sehr altes angefanges Spiel anno 92...
  2. ' Hab dann aufgegeben, als AMOS ein paar unbegreifliche Bugs zeigte. 
  3. Screen Open 1,304,8,4,0
  4. Curs Off : Flash Off : Paper 0 : Cls 0
  5. For A=0 To 31 : Colour A,0 : Next 
  6. Palette 0,$F00,$F80,$F0
  7. Screen Display 1,128,41,304,8
  8. Pen 3 : Print "ENERGY"; : EN=200 : TB=0
  9. Ink 3 : Bar 58,1 To 57+EN,6
  10. Screen Open 0,672,200,4,0
  11. Flash Off : Curs Off : Cls 0 : Hide 
  12. Palette 0,$BBB,$777,$555,$EEE,$A00,$F40,$EE0,0,$77F,$33F,8,$F00,$777,$A00,$CC0
  13. For A=0 To 15 : Colour A+16,Colour(A) : Next 
  14. Screen Display 0,144,50,304,200
  15. Palette 0,0,0,0
  16. Screen Offset 0,18,0
  17. 'MAKE
  18. Make Mask 
  19. For A=0 To 313
  20.   Set Line $FFFF
  21.   X=23+A : Ink 3 : Draw X,0 To X,199
  22.   Y1=Peek(Start(9)+MX*2) : Y2=Peek(Start(9)+MX*2+1)
  23.   Set Line Rnd($FFFF)
  24.   Ink 2,1 : Draw X,Y1 To X,0 : Draw X,Y2 To X,199
  25.   Inc MX
  26. Next 
  27. MY=(Y1+Y2)/2
  28. Set Rainbow 1,3,242,"","",""
  29. GC=15 : BC=15
  30. For A=0 To 241
  31.   Rain(1,A)=GC*$10+BC
  32.   If(A mod 8)=7 and GC>0 Then Dec GC : Rain(1,A-1)=GC*$10+BC
  33.   If(A mod 16)=15 and GC=0 and BC>0 Then Dec BC : Rain(1,A-1)=GC*$10+BC
  34. Next 
  35. Rainbow 1,0,49,0
  36. X=0 : OP=0 : OX=0 : MX=0
  37. A$="L A=202; A: L X=RD/300-10; P; J A;"
  38. Channel 9 To Rainbow 1
  39. Amal 9,A$
  40. A$="L R0=14400; L R1=9800; L R2=0; L R3=0; L R4=5; L R5=0; L R6=3; "
  41. A$=A$+"A: P; L RC=R0; L RD=R1; L A=R5/2+R6; L R5=R5+1; L R3=R3+1; L R0=R0+R2; "
  42. A$=A$+"   L R1=R1+R3; L X=R0/50; L Y=R1/50; "
  43. A$=A$+"   If J1&4 Jump Left; "
  44. A$=A$+"   If J1&8 Jump Right; "
  45. A$=A$+"   L R6=3; "
  46. A$=A$+"B: If J1&1 Jump Up; "
  47. A$=A$+"   If J1&2 Jump Down; "
  48. A$=A$+"C: If R0<7200 Jump V;"
  49. A$=A$+"   If R0>20800 Jump Y; "
  50. A$=A$+"E: If R1<2550 Jump X; "
  51. A$=A$+"F: If R5<3 Jump A; Let R5=0; Jump A;"
  52. A$=A$+"V: Let R0=7200; L X=R0/50; Let R2=0-R2; Jump E; "
  53. A$=A$+"Y: Let R0=20800; L X=R0/50; Let R2=0-R2; Jump E; "
  54. A$=A$+"X: Let R1=2550; L Y=R1/50; Let R3=0-R3; Jump F; "
  55. A$=A$+"L: L R6=2 ; If R2<-200 Jump B; Let R2=R2-R4; Jump B; "
  56. A$=A$+"R: L R6=4 ; If R2>200 Jump B; Let R2=R2+R4; Jump B; "
  57. A$=A$+"U: Let R3=R3-R4-1; Jump C; "
  58. A$=A$+"D: Let R3=R3+R4; Jump C; "
  59. B$="A: Let X=X+4; P; If X<464 Jump A; "
  60. UBOOT$="Let R0=22400; Let R1=-50; L Y=R2+50; L RB=Y; "
  61. UBOOT$=UBOOT$+"A: Let R1=R1-1; Let R0=R0+R1; Let X=R0/50; L RA=X; P; I X>112 J A; "
  62. ROCKET$="Let R0=RA*50; Let R1=-200; L R2=RB+2*50; A 0,(9,1)(10,1); "
  63. ROCKET$=ROCKET$+"A: Let R1=R1-3; Let R0=R0+R1; Let X=R0/50; L Y=R2/50;"
  64. ROCKET$=ROCKET$+"L R3=RD-R2/25; L R2=R2+R3; P; I X>112 J A; "
  65. Sprite 0,0,0,1
  66. Sprite 2,0,0,11
  67. Sprite 4,0,0,7
  68. Sprite 5,0,0,7
  69. Sprite 6,0,0,9
  70. Sprite 7,0,0,10
  71. Channel 0 To Sprite 0
  72. Channel 1 To Sprite 2
  73. Channel 7 To Sprite 5
  74. Channel 4 To Sprite 6
  75. Channel 5 To Sprite 7
  76. Channel 6 To Sprite 4
  77. Palette 0,$20,$40,$60
  78. Amal 0,A$
  79. Amal On 0
  80. Amal On 9
  81. Rem           20654321654321 
  82. Doke $DFF098,%11000011000001
  83. Repeat 
  84.   A=Peek($DFF00F) and 6
  85. Until A=0
  86. ES=0 : TIM=0
  87. Repeat 
  88.   Wait Vbl : Gosub SCROL : EX=0 : TT=0 : Add TIM,1,0 To 9
  89.   A=Peek($DFF00F) and 6 : If A Then Gosub CRASH
  90.   If Sprite Col(0,5 To 5) Then TB=3 : Gosub CRASH : Amal Off 7 : Sprite 5,0,0, : EX=1
  91.   If Sprite Col(0,6 To 6) Then TB=4 : Gosub CRASH : Amal Off 4 : Sprite 6,0,0, : EX=1
  92.   If Sprite Col(0,7 To 7) Then TB=4 : Gosub CRASH : Amal Off 5 : Sprite 7,0,0, : EX=1
  93.   If EN=0 and Chanan(1)=0 Then EX=1
  94.   If Sprite Col(4,5 To 5) Then EX=0 : Sprite 2,X Sprite(5)-3,Y Sprite(5)+2, : Amal Off 3 : Sprite 5,0,0, : Gosub EX
  95.   If EX=1 Then Sprite 2,X Sprite(0)+Rnd(10),Y Sprite(0)+Rnd(4), : Gosub EX
  96.   If Fire(1) and Chanmv(6)=0 Then Sprite 4,X Sprite(0),Y Sprite(0)+4,6 : Amal 6,B$ : Amal On 6
  97.   If Rnd(50)=1 and Chanmv(7)=0 Then Amal 7,UBOOT$ : Amal On 7 : Amreg(7,2)=MY
  98.   If Rnd(20)=2 and Chanmv(7) and Chanmv(4+RO)=0 Then Amal 4+RO,ROCKET$ : Amal On 4+RO : RO=1-RO
  99.   If TT=0 Then TB=1 Else TB=TB-(TIM=0)
  100. Until Y Sprite(0)>250
  101. End 
  102. CRASH:
  103.   If Chanan(1+ES)=0 Then EX=1
  104.   EN=Max(0,EN-TB)
  105.   Screen 1
  106.   If EN>1 Then Ink(EN-2)/66+1 : Bar 58,1 To 57+EN,6
  107.   Ink 0 : Bar 58+EN,0 To 59+EN+TB,8 : Screen 0
  108.   Amreg(0,4)=(EN+19)/30
  109.   TT=1
  110. Return 
  111. EX:
  112.   Amal 1,"A 1,(11,2)(12,2)(13,2)(14,3)(15,3)(16,3)(17,2)(18,1)(19,1); " : Amal On 1
  113. Return 
  114. SCROL:
  115.   Inc OP : If OP>15 Then Add OP,-16 : Add OX,16 : If OX>319 Then Add OX,-320
  116.   Set Line $FFFF
  117.   X=335+OX+OP : Ink 3 : Draw X,0 To X,199
  118.   Y1=Peek(Start(9)+MX*2) : Y2=Peek(Start(9)+MX*2+1)
  119.   Set Line Rnd($FFFF)
  120.   Ink 2,1 : Draw X,Y1 To X,0 : Draw X,Y2 To X,199
  121.   MY=(Y1+Y2)/2
  122.   Add MX,1,0 To 4999
  123.   Screen Offset 0,18+OX+OP,0
  124.   Screen Copy 0,X,0,X+1,200 To 0,X-320,0
  125. Return 
  126. Procedure MAKE
  127.   Erase 9 : Reserve As Data 9,10000
  128.   Y1=10 : Y2=189
  129.   For A=0 To 4999
  130.     Poke Start(9)+A*2,Y1
  131.     Poke Start(9)+A*2+1,Y2
  132.     UY1=Rnd(4)-2
  133.     UY2=Rnd(4)-2
  134.     If(Y2-UY2)-(Y1+UY1)<30 Then UY1=-2 : UY2=-2
  135.     Y1=Max(Min(Y1+UY1,180),10)
  136.     Y2=Max(Min(Y2-UY2,189),20)
  137.   Next 
  138. End Proc